"""
爬取糗事分页热图，通过选择 分页数 下载并存储图片。
分析：
api接口：https://www.qiushibaike.com/imgrank/
第一页：https://www.qiushibaike.com/imgrank/page/1
第二页：https://www.qiushibaike.com/imgrank/page/2
第三页：https://www.qiushibaike.com/imgrank/page/3
...
请求方式：get

先爬取网页源码，然后通过 re 找到图片的 url，可通过 urlretrieve(url,filename) 来远程下载。

正则表达式：
pattern = re.compile('')  # 定制正则表达式规则
list_ = pattern.findall(html)  # 与文本匹配
"""

import urllib.request
import urllib.parse
import re


def create_request(page):
	# 接口
	get_url = 'https://www.qiushibaike.com/imgrank/page/'

	headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
	}

	get_url = get_url + str(page)
	print(get_url)
	request = urllib.request.Request(url=get_url, headers=headers)
	return request


def get_response(request):
	response = urllib.request.urlopen(request)
	resp_data = response.read().decode('utf-8')
	return resp_data


def download_images(resp_data):
	# 制作正则表达式对象
	pattern = re.compile('<div class="thumb">.*?<img src="(.*?)"', re.S)
	# 将表达式对象 对文本进行匹配
	src_url = pattern.findall(resp_data)
	print(src_url)

	for url_ in src_url:
		# 获取图片的 格式
		filename = url_.split('/')[-1]
		# 远程下载图片、网页、视频
		urllib.request.urlretrieve(url='https:' + url_, filename='糗事热图/qiushi' + filename)


if __name__ == '__main__':
	start_page = int(input('请输入起始页：'))
	end_page = int(input('请输入末尾页：'))
	for page in range(start_page, end_page + 1):
		# 1.定制 请求头 request
		request = create_request(page)
		# 2.发送请求，获取响应数据，并读取
		resp_data = get_response(request)
		# 3.下载数据并保存
		download_images(resp_data)
